local skynet = require "skynet"
local packdeal = require "packdeal" 
local redis   = require "redis"
require "config_redis"

REDIS = {}  

local REDIS_CON 


function REDIS.get_service()  
    local service_all = REDIS.hgetall('service')  
    local num = 9999999
    local service_name = nil
    for k,v in pairs(service_all) do
        v = tonumber(v)
        if v > 0 and num > v then
            num = v
            service_name = k
        end
    end 
    if service_name == nil then   --没有配置  默认第一个 
        service_name = service_game_now
    end
    return service_name
end

function REDIS.incr_service_now(   )   
    local redis_db = get_redis( )
    return redis_db:hincrby('service', service_game_now, 1 ) 
end

function REDIS.decr_service_now( ) 
    local redis_db = get_redis( )
    return redis_db:hincrby('service', service_game_now, -1 ) 
end

function get_redis(  ) 
    if REDIS_CON == nil then 
        REDIS_CON = redis.connect(redis_conf)
    end
    return REDIS_CON
end

function REDIS.get(key)  
    local redis_db = get_redis( )
    return redis_db:get( key ) 
end

function REDIS.incr(key,feid)  
    local redis_db = get_redis( )
    return redis_db:hincrby(key,feid, 1 ) 
end

function REDIS.decr(key,feid)
    local redis_db = get_redis( )
    return redis_db:hincrby(key,feid, -1 ) 
end

--  local  info = { 'roomid',123, }   
--  REDIS.user(1,info)
function REDIS.user(uid,info)
    local redis_db = get_redis( )
    table.insert(info, 1, REDIS_KEY.user .. uid)
    return redis_db:hmset( info ) 
end 

--向名称为key的set中添加元素member
function REDIS.sadd(key,val)
    local redis_db = get_redis( ) 
    return redis_db:sadd( key,val )  
end

--删除名称为key的set中的元素member
function REDIS.srem(key,val)
    local redis_db = get_redis( ) 
    return redis_db:srem( key,val )  
end

--返回名称为key的set的所有元素
function REDIS.smembers(key)
    local redis_db = get_redis( ) 
    return redis_db:smembers( key )  
end

--del  key 
function REDIS.del(key)
    local redis_db = get_redis( ) 
    return redis_db:del( key )  
end

--hget  key 
function REDIS.hgetall(key)
    local redis_db = get_redis( ) 
    local data = redis_db:hgetall( key )  
    local rs = {}
    if data ~= nil then  
        for k,v in pairs(data) do
            if k % 2 == 1 then
                rs[v] = data[k+1]
            end 
        end
    end
    return rs
end

--hget  key 
function REDIS.hget(key,feid)
    local redis_db = get_redis( ) 
    return redis_db:hget( key,feid )  
end
--hset  key 
function REDIS.hset(key,feid,val)
    local redis_db = get_redis( ) 
    return redis_db:hset( key,feid,val )  
end

--del  key 
function REDIS.hdel(key,feid)
    local redis_db = get_redis( ) 
    return redis_db:hdel( key,feid )  
end

--lpush  在名称为key的list头添加一个值为value的 元素 
function REDIS.lpush(key,value)
    local redis_db = get_redis( ) 
    return redis_db:lpush( key,value )  
end

--返回名称为key的list的长度
function REDIS.llen(key )
    local redis_db = get_redis( ) 
    return redis_db:lpush( key  )  
end

--返回名称为key的list中start至end之间的元素（下标从0开始
function REDIS.lrange(key, start, endnum )
    local redis_db = get_redis( ) 
    return redis_db:lrange( key, start, endnum  )  
end

--返回名称为key的list中start至end之间的元素（下标从0开始
function REDIS.ltrim(key, start, endnum )
    local redis_db = get_redis( ) 
    return redis_db:ltrim( key, start, endnum  )  
end


return REDIS
